package modules.cas.cas3;

import java.util.concurrent.atomic.AtomicInteger;

/**
 * CAS算法
 *      比较并交换
 * @author shengren.yan
 * @create 2021-04-15
 */
public class cas1 {
    // CAS : compareAndSet 比较并交换
    public static void main(String[] args) {

        AtomicInteger atomicInteger = new AtomicInteger(20);

        System.out.println("更新前的值：" + atomicInteger.get());

        // 参数：期望值、更新值 ，返回的是布尔值
        // 如果实际值 和 我的期望值相同，那么就更新
        // 如果实际值 和 我的期望值不同，那么就不更新
        atomicInteger.compareAndSet(20,12);

//      System.out.println("有没有更新成功 :" + atomicInteger.compareAndSet(20,12));
        System.out.println("更新后的值：" +atomicInteger.get());

//        //CAS 是CPU的并发原语
//        atomicInteger.getAndIncrement(); // ++操作
//        System.out.println(atomicInteger.compareAndSet(2020, 2021));
//        System.out.println(atomicInteger.get());
    }


}
